package com.zero.manage.web.components.service.impl;

import com.zero.manage.web.components.base.BaseService;
import com.zero.manage.web.components.dao.SysDictDao;
import com.zero.manage.web.components.entity.QSysDictEntity;
import com.zero.manage.web.components.entity.SysDictEntity;
import com.zero.manage.web.components.query.SysDictQuery;
import com.zero.manage.web.components.service.SysDictDetailsService;
import com.zero.manage.web.components.service.SysDictService;
import io.gitee.zerowsh.enums.ResultEnums;
import io.gitee.zerowsh.util.PublicResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Optional;


/**
 * 系统字典 业务接口实现
 *
 * @author zero
 */
@Service
public class SysDictServiceImpl extends BaseService<SysDictEntity, String, SysDictDao, SysDictQuery> implements SysDictService {
    @Autowired
    private SysDictDetailsService sysDictDetailsService;

    private QSysDictEntity qSysDictEntity = QSysDictEntity.sysDictEntity;

    public Optional<PublicResult> paramCheck(SysDictEntity sysDictEntity, PublicResult.PublicResultBuilder builder) {
        boolean exists = mapper.exists(qSysDictEntity.code.eq(sysDictEntity.getCode()));
        if (exists) {
            return Optional.of(builder.msg(String.format("编码已经存在 code = %s", sysDictEntity.getCode())).build());
        }
        return Optional.empty();
    }

    @Override
    public PublicResult add(SysDictEntity entity) {
        Optional<PublicResult> paramCheck = paramCheck(entity, PublicResult.builder().code(ResultEnums.ADD_FAIL.getKey()));
        return paramCheck.orElseGet(() -> super.add(entity));
    }

    @Override
    public PublicResult update(SysDictEntity entity) {
        Optional<SysDictEntity> byId = mapper.findById(entity.getId());
        if (byId.isPresent()) {
            return super.update(entity);
        } else {
            return PublicResult.updateOk();
        }
    }

//    @Override
//    public PublicResult deleteByIds(Iterable<SysDictEntity> ids) {
//        //查询出所有字典明细ID
//        List<String> dictDetailsId = sysDictDetailsService.getIdByDictCodeIn(ids);
//        if (!CollectionUtils.isEmpty(dictDetailsId)) {
//            //删除字典明细
//            sysDictDetailsService.deleteByIds(dictDetailsId);
//        }
//        return super.deleteByIds(ids);
//    }

}
